﻿package net.cooltain.utils;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class PropertyUtil {

	public static Object getProperty(Object obj , String methodName){

		Class c = obj.getClass();
		Method m;
		try {
			m = c.getMethod(methodName,new Class[]{});	//第一个参数为调用的方法名。第二个为方法的参数的类型
			return m.invoke(obj, new Object[]{} ); 			//第一个参数表示要调用的对象，后者为传给这个方法的参数
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		
		return null;
	}
	
	public static Object getProperty(Object obj , String methodName , Object[] params){
		
		Class c = obj.getClass();
		Class[] types = new Class[params.length];
		for(int i=0; i<types.length; i++){
			types[i] = params[i].getClass();
		}
		Method m;
		try {
			m = c.getMethod(methodName,types);	//第一个参数为调用的方法名。第二个为方法的参数的类型
			return m.invoke(obj, params ); 			//第一个参数表示要调用的对象，后者为传给这个方法的参数
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		
		return null;
	}
}
